home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 3: The Continuation / 17-Bit_The_Continuation_Disc.iso / amigan / amigan 14 / dme / dme.doc < prev    next >
Encoding:
Text File  |  1994-01-27  |  27.4 KB  |  649 lines

  1.  
  2. DOC.TXT
  3.  
  4. DME V1.28 (C)CopyRight 1987, Matthew Dillon.  All Rights Reserved. This
  5. software may be distributed for non-profit only.  This software is
  6. NOT shareware.
  7.  
  8.     Matthew Dillon          contribute if you wish.
  9.     891 Regal Rd
  10.     Berkeley, Ca. 94708
  11.  
  12.     Source is available on request or by anonymous FTP.  Source requests
  13.     can ONLY be made via electronic mail to the following address:
  14.  
  15.     USENET   ...!ihnp4!ucbvax!dillon
  16.     ARPANET  dillon@ucbvax.berkeley.edu
  17.  
  18. ---------------------------------------------------------------------------
  19.  
  20. I   Overview
  21. II  Keymapping          key and mouse mapping
  22. III Command Sequences   DME commands
  23. IV  File Particulars    notes on loading and saving files
  24. V   Workbench Support
  25. VI  Revision Summary    revision numbering, changes made, etc...
  26. VII Compiling           compiling instructions
  27.  
  28.                                     I
  29.                                  OVERVIEW
  30.  
  31. See REVISIONS section for revisions.  DME is a WYSIWYG editor designed
  32. mainly for programmers.  Although it is not a word processor, it does
  33. include many word processing features such as Word-Wrap and automatic
  34. paragraph formatting.  Here is a quick 'features' list:
  35.  
  36.         -control language based on a rich command set accessed manually
  37.          or via arbitrary mapping of keys.  (Every key may be mapped to 128
  38.          different things via qualifier and mouse keys)
  39.  
  40.         -fast visual response (it scrolls quickly)... even faster when
  41.          BlitzFonts is running.
  42.  
  43.         -title-line statistics showing your current position in the file,
  44.          file name, whether the file has been modified or not, etc...
  45.  
  46.         -Multiple Windows, ability to iconify windows
  47.  
  48.         -Word Wrap and automatic paragraph formatting.
  49.  
  50.         -ability to map any KEY or MOUSE BUTTON combination.
  51.  
  52. DME has been designed to allow easy expansion, and I intend to make many
  53. future improvments.  It has not been designed for user friendliness, but is
  54. straight forward if you read this document [care]fully.
  55.  
  56. DME can take any number of arguments.  Any argument without a '-' in front
  57. of it is considered to be a file.   Normally, DME will automatically SOURCE
  58. two script file, S:.EDRC, and the .EDRC in your current directory. These
  59. files do not have to exist. These script files usually contain mappings and
  60. do things like turn on word wrap and set the right margin.
  61.  
  62.     FLAGS:
  63.             -ffilename      -source this script file instead of .EDRC
  64.  
  65.             -b              -normally when multiple files are specified,
  66.                              DME opens them with small windows.  This opens
  67.                              them with normal sized windows.
  68.  
  69.             -tN     -Open the window on scan line N
  70.             -lN     -Open the window offset N scan columns
  71.             -wN     -Make the window N pixels wide
  72.             -hN     -Make the window N pixels high
  73.  
  74.  
  75.                                     II
  76.                                  KEYMAPPING
  77.  
  78. MOUSE BUTTONS:
  79.  
  80.     The mouse buttons and combinations thereof may now be mapped.  The
  81.     default mappings for the mouse buttons are as follows:
  82.  
  83.     Left-button:    Move cursor to current mouse position
  84.     Right-button:   Iconify window
  85.     Left-button held down while moving mouse tracks the cursor
  86.  
  87.     The iconification features:
  88.         -Remembers original window size and placement
  89.         -Remembers placement of iconified window when you re-iconify later.
  90.  
  91.     Currently, you will crash the machine if you run out of memory and DME
  92.     is unable to open the icon window or original window, so be careful.
  93.  
  94.     see below for mapping the mouse buttons and mouse movement.
  95.  
  96.  
  97. KEYBOARD:
  98.  
  99. The rest of the Functional interface for DME is based on key/mouse mappings
  100. and a rich command set.  Unlike other text editors, any non-qualifier key
  101. in DME may have any meaning whatsoever.  It just so happens that the
  102. default keymappings assign such things as the `return' key to the RETURN
  103. function, the `up' key to the UP function, etc...  Keys are named by their
  104. keycap labels with the following exceptions:
  105.  
  106.     the name for Back-Space is  BS
  107.     the name for numeric keypad keys are prepended with an NK, except for
  108.     the Enter key which is named 'ENTER'.
  109.     The four cursor control keys are labeled UP, DOWN, LEFT, and RIGHT
  110.     The three mouse buttons are labeled RMB, MMB, and LMB.
  111.  
  112. *NOTE*  the normal Amiga mouse has only two buttons, the Left and the Right
  113. mouse buttons (LMB, RMB).  A properly installed three-button mouse is
  114. also supported.
  115.  
  116. *NOTE*  You must type commands in lower-case, except for text, which can be
  117. either lower or upper case, and for upper-case alpha keys when specifying
  118. keymaps (i.e.  A and s-a are the same key).  The exception is the AMIGA
  119. qualifier key, which uses 'A' instead of 'a'(Alt).
  120.  
  121. Each key may be qualified with any combination of CTRL, ALT, SHIFT, AMIGA,
  122. or any of the MOUSE buttons.  With 6 qualifiers (7 if your mouse has a
  123. middle button), you can assign up to 64 (128) different maps to each
  124. physical key on the keyboard.
  125.  
  126. NOTE: The CAPS-LOCK, when lit, is equivalent to SHIFT only for Alpha keys.
  127.  
  128. NOTE: The AMIGA-ALT (aA) combination isn't very usable since Intuition uses
  129. the sequence to duplicate a Mouse SELECT.  Other AMIGA sequences are used
  130. by intuition for mouse movement and other things.  Some other qualifier
  131. combinations may not be usable due to other special sequences.
  132.  
  133.     ***EXAMPLES:***
  134.  
  135.     tab tab
  136.     a-a ALT a
  137.     A-a AMIGA a
  138.     sA-a        SHIFT AMIGA a
  139.     s-tab       SHIFT tab
  140.     c-tab       CTRL tab
  141.     ac-?        ALT-CTRL ?
  142.     s-f5        SHIFT F5
  143.     nk0 Numeric Keypad 0
  144.     cs-nk0      CTRL SHIFT Numeric Keypad 0
  145.     L-lmb       Left Mouse button pressed
  146.     L-mmove     Mouse moved while left mouse button held down
  147.     LR-lmb      left mouse button hit while right mouse button held down
  148.  
  149.     ***************
  150.  
  151. MAPPING MOUSE BUTTONS
  152.  
  153.     Mouse buttons serve both as QUALIFIERS and as KEYS.  Thus, you can map
  154.     both normal keystrokes which require a mouse button to be held down:
  155.  
  156.         map L-a ``left button and an a''
  157.  
  158.     as well as the mouse keys themselves:
  159.  
  160.         map L-lmb   ``left mouse key''
  161.  
  162.     note that you had to specify the left mouse button down qualifier L as
  163.     well as the left mouse button LMB.
  164.  
  165.     If you map the left mouse button, and also map a sequence such as left
  166.     mouse button + a:
  167.  
  168.         map L-lmb   tomouse
  169.         map L-a     ``hello''
  170.  
  171.     Note that the first mapping will always get executed even if you
  172.     intended L-a (that is, BOTH mappings would get executed).  In order
  173.     to avoid confusion you might want to UNMAP the system default mapping
  174.     for the right mouse button (mapped to ICONIFY) if you wish to apply
  175.     combinations to the right mouse button.
  176.  
  177.     MOUSE MOVEMENT is mapped with one or more mouse qualifiers (L, R, M),
  178.     plus 'MMOVE' for the key.  That is:
  179.  
  180.         map LR-mmove ``moving the mouse with both buttons held down''
  181.  
  182.  
  183. DEFAULT KEYMAP:
  184.  
  185.     All Printable Ascii keys mapped to their ascii equivalent
  186.     BS, DEL, UP, DOWN, LEFT, RIGHT, TAB, S-TAB, and ENTER mapped properly
  187.  
  188.     `s- '       Shift Space is Mapped to space
  189.     backspace   Back Space
  190.     tab         Tab
  191.     s-tab       Back tab
  192.     enter       the RETURN command
  193.     return      `return insline up firstnb down'
  194.     esc         Escape into command mode
  195.     del         Delete character
  196.     s-del       Delete line
  197.     c-del       Remove to end of line
  198.     up          cursor up
  199.     down        cursor down
  200.     left        cursor left
  201.     right       cursor right
  202.     s-up        top of text
  203.     s-down      bottom of text
  204.     s-left      first column
  205.     s-right     last column (one past the last non-blank on a line)
  206.     c-up        page up
  207.     c-down      page down
  208.     a-up        scroll up
  209.     a-down      scroll down
  210.     c-q         Quit
  211.     c-w         TOGGLE WORD WRAP MODE
  212.     f1          Prompts for file to insert
  213.     f2          Prompts for new file to replace current text with
  214.     f3          Prompts for new file to place into new window
  215.     f7          Prompts for filename to save marked block to
  216.     f8          Saves current text and then does an 'f2'
  217.     f9          Saves current text, but does not quit
  218.     f10         Saves current text and quits.
  219.     c-r         Word Right
  220.     c-l         Word Left
  221.     c-i         insert mode on
  222.     c-o         insert mode off
  223.     c-/         Prompts for search pattern
  224.     c-p         search previous occurance
  225.     c-n         search next occurance
  226.     c-s         `split first down' ... fancy split line
  227.     c-u         Unblock a block
  228.     c-b         Mark start/end of a block
  229.     a-s         SOURCE a block of text as if it were a script file
  230.     sa-s        SOURCE the current line of text as if it were a script file
  231.     a-d         delete block
  232.     a-c         copy block
  233.     a-m         move block
  234.     c-f         reformat paragraph
  235.     c-g         Prompts for line to GOTO to.
  236.     c-j         join next line to this line.
  237.     L-lmb       move cursor to mouse position (tomouse)
  238.     L-mmove     move cursor to mouse position (tomouse)
  239.     R-rmb       iconify window
  240.     help        `newwindow newfile s:DME.DOC escimm `find ''
  241.  
  242.  
  243.                                     III
  244.                              COMMAND SEQUENCES
  245.  
  246. DME has a rich command set which allows you to embed commands within
  247. commands, or specify multiple commands in a row.  A command consists of a
  248. KEYWORD followed by a FIXED number of arguments (0, 1, 2...).  The argument
  249. delimeter in DME is a SPACE.  Therefore, to embed strings containing spaces
  250. as a single argument, you must surround the string with `string'
  251. (backsinglequote-string-singlequote).  TEXT to be written as if typed is
  252. also specified via a string in backquote-quotes.  For example:
  253.  
  254.     right right `hello' right right `hello' enter down
  255.     map f4 `right right' map f5 `left left'
  256.     map f4 ``hello''
  257.  
  258. Reiterating (because this is important!)... If a command expects ONE
  259. argument, then it really does expect a single argument, and any remaining
  260. arguments are thought to be the next command... so:
  261.  
  262.     map f4 right
  263.                                     -right is only one word, so no need
  264.                                      for `'.
  265.     map f4 `right right'
  266.                                     -we want to map f4 to two rights... we
  267.                                      need the `' or the second right will
  268.                                      not be part of the map.
  269.  
  270.     map c-del `repeat cright del'
  271.                                     -this is already implimented as REMEOL,
  272.                                      but shown here for clarity.
  273.  
  274. Some arguments will eventually be fed through the command interpreter more
  275. than once.  The MAP command is a good example.  When you execute a MAP
  276. command, the first run through the command interpreter installs the map
  277. string minus a set of quotes.  So, if you want to specify text, you must
  278. enclose the text in two sets of ``text'' because the map string gets passed
  279. through the command interpreter again when you hit the mapped key.  Here
  280. are some more complex examples:
  281.  
  282.     map f4 `right right `hello' left left'      *RIGHT*
  283.     map f4 right right hello left left          *WRONG*
  284.  
  285.     map f4 `map f4 ``hello'''
  286.                                     -the first time you hit F4, it's command
  287.                                      is to re-map itself to the TEXT `hello'.
  288.                                      (gads!).
  289.  
  290.     map c-i `repeat tr `` '''
  291.                                     -example of how to embed a space in a
  292.                                      map and repeat (goes through command
  293.                                      interpreter three times!).
  294.  
  295.  
  296. An easy way to fool around executing commands or making maps is either to
  297. use the ESC key (which enters command mode), or  a-S (alt-shift-s), which
  298. EXECUTES the current DME line that the cursor is on.... so you can use DME
  299. to edit and test your new keymappings.
  300.  
  301.  
  302. !!!!!!!!!! NOTE NOTE NOTE NOTE NOTE !!!!!!!!!!!!!! You must type commands
  303. in LOWER case. They are in upper case here for visibility.
  304.  
  305.     COMMAND LIST
  306.  
  307.     `text'          -enter text as if typed.
  308.     key             -execute a keymap as a macro (example:  c-a)
  309.     BACK            -same as BS
  310.     BACKTAB         -backward tab
  311.     BCOPY           -copy block before cursor line
  312.     BDELETE         -delete the block
  313.     BLOCK           -Set start or end of block
  314.     BMOVE           -move block before cursor line
  315.     BOTTOM          -Move to Bottom of File
  316.     BS              -backspace, (delete char to left of cursor)
  317.     BSAVE file      -save the block to a file
  318.     BSOURCE         -source current text block as if it were a script file
  319.     DEL             -delete, (deletes char under cursor)
  320.     DELINE          -delete line
  321.     DOWN            -cursor down
  322.     DOWNADD         -cursor down.  If at bottom of text, add a line.
  323.     ESC             -toggle manual command entry mode
  324.     ESCIMM arg      -go into command entry mode prompting with a
  325.                      predefined string.
  326.     EXECUTE comm    -Execute a CLI command
  327.     FIND string     -SET the search pattern and do a NEXT
  328.     FINDR s1 s2     -Set find and replace patterns and do one find/rep.
  329.     FINDSTR string  -SET the search string pattern
  330.     FIRST           -move to column 1
  331.     FIRSTNB         -Move to first non-blank in line.
  332.     GOTO BLOCK      -Goto the beginning of the marked block.
  333.     GOTO START      -same as GOTO BLOCK.  undefined if no block
  334.     GOTO END        -goes to the END of the marked block.  undef. if no blk.
  335.     GOTO [+/-]N     -Goto an absolute or relative line number
  336.     HEIGHT N        -set height in pixels for any new windows
  337.     ICONIFY         -iconify the window
  338.     IF cnd act      -IF/WHILE/IFELSE.. SEE BELOW
  339.     IFELSE cnd ifact elseact
  340.     INSERTMODE what -set INSERTMODE.  what = on, off, or toggle
  341.     INSFILE name    -insert a file into the current text.
  342.     INSLINE         -insert line
  343.     JOIN            -join next line to line at cursor
  344.     LAST            -move one beyond the last non-space in a line.
  345.     LEFT            -cursor left
  346.     LEFTEDGE N      -set leftedge in pixels for any new window
  347.     MAP key map     -map a key to a keymap
  348.     MARGIN N        -set WordWrap and paragraph formatting margin
  349.                      (related to WORDWRAP and REFORMAT)
  350.     NEWFILE name    -replace current text with new file
  351.     NEWWINDOW       -open newwindow
  352.     NEXT            -find next occurance of search pattern
  353.     NEXTR           -find next occurance and replace
  354.     PAGEDOWN        -pagedown a partial page (see PAGESET)
  355.     PAGESET n       -n PERCENT (0 to 100). page step size relative to the
  356.                      current number of rows in the window.
  357.     PAGEUP          -pageup a partial page (see PAGESET)
  358.     PREV            -find previous occurance of search pattern
  359.     PREVR           -find previous occurance and replace
  360.     QUIT            -quit
  361.     REFORMAT        -reformat paragraph using the margin.
  362.     REMEOL          -Remove text under and beyond the cursor.
  363.     REPEAT cnt comm -SEE BELOW
  364.     REPSTR string   -SET the replace string pattern
  365.     RESETTOGGLE N   -clear toggle array entry N(0..31)
  366.     RESIZE cols rows-Resize current window. E.G:  `resize 70 23'
  367.     RETURN          -same as `FIRST DOWNADD'
  368.     RIGHT           -cursor right
  369.     SAVEAS file     -save current text under a different name (title
  370.                      line name does not change)
  371.     SAVEMAP file    -save user keymappings
  372.     SAVEOLD         -save current text under current name
  373.     SAVESMAP file   -save all keymappings, including system keymaps
  374.     SAVETABS on/off -Optimize file saves by crunching spaces to tabs.
  375.                      The default is OFF.
  376.     SCREENBOTTOM    -Move cursor to the bottom of the screen.
  377.     SCREENTOP       -Move cursor to the top of the screen
  378.     SCROLLUP        -Scroll up without moving cursor
  379.     SCROLLDOWN      -Scroll down without moving cursor
  380.     SETTOGGLE N     -set toggle array entry N  (0..255)
  381.     SOURCE file     -source a script file
  382.     SPLIT           -Split line at cursor
  383.     TAB             -forward tab
  384.     TABSTOP N       -Set tab stops every N.  does not effect text load
  385.     TLATE [+/-]N    -translate character by +N or -N, or set character
  386.                      to exactly N if no + or -. (e.g. TLATE +65 TLATE 3)
  387.     TOGGLE N        -flip toggle array entry N (0..255)  (See IF)
  388.     TOMOUSE         -moves cursor to mouse position
  389.     TOP             -Move to Top of File
  390.     TOPEDGE N       -set topedge in pixels for any new window
  391.     UNBLOCK         -clear the block markers for the current window
  392.     UNMAP key       -unmap a key
  393.     UP              -cursor up
  394.     WHILE cnd act   -(see below)
  395.     WIDTH N         -set width in pixels for any new window
  396.     WLEFT           -move to beginning of previous word.  If in the
  397.                      middle of a word, move to beginning of current word.
  398.     WORDWRAP on/off/toggle
  399.                     -Word Wrap mode (related to MARGIN)
  400.     WRIGHT          -move to beginning of next word
  401.  
  402.  
  403.  
  404.     -------------------------------------------------------------------
  405.     Command which cause a command line to abort (e.g. in repeat, while):
  406.  
  407.     FIND[R]/NEXT[R]/PREV[R]  when the string is not found.  NEXT stops at
  408.     the end of the file, PREV stops at the beginning.
  409.  
  410.     DOWN,LEFT,RIGHT,UP  when the operation cannot be done.
  411.     -------------------------------------------------------------------
  412.  
  413.  
  414.     REPEAT N arg    -Repeat `arg' N times.  Apart from being a number, N
  415.                      can also be one of:
  416.  
  417.                         line    Current line # (lines begin at 1)
  418.                         lbot    #lines to the bottom, including current line
  419.                         cleft   column # (cols begin at 0)
  420.                         cright  #chars to eol, including current char under cursor
  421.                         tr      #char positions to next tab
  422.                         tl      #char positions to next back tab
  423.  
  424.                     Certain commands can abort a REPEAT loop.
  425.                     Specifically, any FIND[R], NEXT[R], or PREV[R] in which
  426.                     the search string is NOT found will abort a REPEAT.
  427.                     Most operations which can go out of bounds, such as
  428.                     UP, LEFT, RIGHT, DOWN, also abort a repeat.
  429.  
  430.                     Specifying -1 as N causes REPEAT to go on forever
  431.                     (well, actually, 0xFFFFFFFF times) or until an abort.
  432.                     To abort an accidentel infinite loop, you must use the
  433.                     CLI BREAK command.
  434.  
  435.     IF [!]condition arg
  436.     WHILE [!]condition arg
  437.     IFELSE [!]condition arg else arg
  438.  
  439.             If the specified condition is true, execute the argument.  For
  440.             WHILE, the argument is executed until the condition is false
  441.             (be careful!).
  442.  
  443.             the optional '!' inverts the logic.
  444.  
  445.             Conditions:
  446.  
  447.             #       if toggle entry # is SET.  there are 256 toggles (0..255)
  448.             t       if On line 1
  449.             b       if On last line
  450.             l       if At column 0
  451.             r       if At end of line (spaces below and beyond)
  452.             m       if Text has been modified
  453.             i       if in insert mode
  454.             x[<=>]# if column position (starts at 1) is (any OR combo of
  455.                     <, =, or >) than some number.  Example:   x<=20
  456.             y[<=>]# if Line number (starts at 1) is (same as for x)
  457.             cl      character under cursor is lower case alpha
  458.             cu      character under cursor is upper case alpha
  459.             ca      character under cursor is alpha-numeric
  460.             cn      character under cursor is numeric
  461.             c[<=>]# character under cursor is ascii code # (# in decimal)
  462.                     optional conditionals as in 'x' and 'y'.
  463.             cb      cursor within a block
  464.  
  465.         Example: simulating an insert mode toggle: ALT-i (not CTL-i)
  466.  
  467.      map a-i `ifelse 0 `toggle 0 insertmode OFF' `toggle 0 insertmode ON''
  468.  
  469.         Example: while lower case, map to upper case and move right.
  470.  
  471.      map c-U `while cl `tlate -32 right''
  472.  
  473.         Example: Search/Replace all of text.
  474.  
  475.     map c-R `escimm `findstr ' escimm `repstr ' repeat -1 nextr'
  476.  
  477.      if c<32 ``char under cursor is smaller than 32''
  478.      if c<>32 ``char under cursor is not equal to 32''
  479.      while !b down
  480.  
  481.  
  482.     WARNING:    It is possible to get into infinite loops with REPEAT and
  483.                 WHILE.  Currently, BREAK is *not* handled by the open
  484.                 window, but by whatever executed DME.  That is, you must
  485.                 either Ctl-C from your CLI, or send a BREAK to the DME
  486.                 process from your CLI.  I hope to fix this sometime.
  487.  
  488.  
  489.                                     IV
  490.                              FILE PARTICULARS
  491.  
  492. No Matter what you set internal tabs to, tabs in disk files will be 8.
  493. This allows you to use your favorite tabs stops (mine are 4) and still
  494. have your disk files compatible with TYPE, a printer, etc...  DME by
  495. default doesn't bother to optimize when writing out files and simply uses
  496. spaces. If you `SAVETABS on' before saving (or in your S:.EDRC, etc...),
  497. DME will attempt to optimize the file by placing TABS in appropriate
  498. places.  DME will not place any TABS after the first single, back, or
  499. double quote is encountered in a line.  If this does not cover every
  500. situation in your particular application that you want to be *sure* no tabs
  501. will occur in sensitive sections, then you should not use `SAVETABS on'.
  502.  
  503. It should be noted that since DME removes spaces at the end of the line,
  504. editing UUENCODED ascii files will not work for uuencoded lines which end
  505. with a space.  The nominal fix is to add an extra character after each
  506. uuencoded line (anything), which is ignored by the UUDECODE program.
  507.  
  508. The command to save the current document under the default name is SAVEOLD,
  509. *not* SAVE.  SAVE is not a valid command.  This is to prevent people who
  510. have not read the documentation from assuming 'save' takes an argument (and
  511. screwing up their work).  SAVEOLD does NOT take an argument, SAVEAS does.
  512.  
  513. SAVEOLD/SAVEAS do not automatically backup the destination file.  If you
  514. are working in an enviroment where you are worried about ensuring a viable
  515. copy can be recovered if your Amiga crashes in the middle of the save, you
  516. can write a macro to save the file into two places.  Usually, people backup
  517. their working disks so this is not neccesary.
  518.  
  519. Workbench Support:  If DME is run from the workbench, it will automatically
  520. construct an icon file when you save a document.  If run from a CLI, no
  521. icon file is generated.
  522.  
  523.                                     V
  524.                               WORKBENCH SUPPORT
  525.  
  526. DME V1.26 and beyond support the workbench in the following way:  (1) you
  527. can click on the DME icon to bring up DME with ram:unnamed.  (2) you can
  528. select one or more standard ascii documents which have DME as the default
  529. tool.  If DME has no knowlege of a text icon, it uses its own.  Command
  530. line arguments are passed to DME via the tooltypes entries for DME's
  531. application icon or via individual document icons.  The following format is
  532. used:
  533.  
  534.     ARG=flag
  535.  
  536.     See the OVERVIEW section for allowed flags.  Only one argument per line
  537.     is allowed (sorry).  The tooltypes for the application icon are
  538.     processed first, then the tooltypes for each document icon are
  539.     processed before each file is loaded.
  540.  
  541.     ARG= -t10
  542.     ARG= -l10
  543.  
  544.                                     VI
  545.                               REVISION SUMMARY
  546.  
  547. V1.28 RELEASE
  548.     Copy block does *not* automatically un-block the block.
  549.     Titlebar text no longer blinks when it changes
  550.     Keyboard releases no longer effect operation, which removes an
  551.     annoying bug with mapping iconify to the keyboard.
  552.     new commands:   SCROLLUP, SCROLLDOWN and associated key maps (a-up, a-down)
  553.     you may now place commands -after- an ESCIMM command.
  554.  
  555. V1.27 RELEASE
  556.     -macros run about 20% faster due to hashing of the command table
  557.     -Maximum # of toggles raised to 256 (see IF/WHILE)
  558.     -small fixes to the code (nothing major)
  559.     -child windows inherit tab stops, insert mode, and wordwrap mode
  560.     -MOUSE BUTTONS AND MOVEMENT CAN NOW BE MAPPED
  561.     -New Commands: ICONIFY      (used to be hardwired.  Is now a command)
  562.     -Extended Commands: GOTO    (GOTO END)
  563. V1.26 Beta, minimal Release
  564.     -Workbench support
  565.     -New Command:   EXECUTE
  566. V1.25 RELEASE
  567.     -BSAVE does NOT UNBLOCK after saving (switch in functionality yet again)
  568.     -various bugs fixed (IF, tabs on file save)
  569.     -New Commands: MARGIN, REFORMAT, WORDWRAP, RESIZE,
  570.                    TOPEDGE, LEFTEDGE, WIDTH, HEIGHT
  571.     -Command line options added for setting the window size and an optional
  572.      specified script file (when specified, local .EDRC not sourced).
  573.  
  574.     -Enhanced Commands: IF  ..more control with conditions, addition of
  575.                               a couple more specifications.
  576.                        JOIN .. functionality slightly changed
  577.     -keymaps may now be used as macros in other commands. (macros)
  578.     -New keymaps added to the default set.
  579.     -Mouse movement cleaned up a little.
  580.  
  581. V1.24 Internal
  582.  
  583. V1.23 RELEASE
  584.     -S:.EDRC now sourced instead of C:.EDRC
  585.     -User keymappings now work in COMMAND mode (when you hit ESC).
  586.     -You can now map the Amiga keys ('A' for Amiga, since 'a' is alt).
  587.     -Enhanced Commands: IF/IFELSE/WHILE (optional '!' in front of cond)
  588.                         new condition 'cb' 'character in selected block'
  589.                         GOTO (can now say `goto block')
  590.     -NewCommands:    PAGESET SAVETABS
  591.     -Writing TABS (always 8) out to disk to save space now supported.
  592.  
  593. V1.22 RELEASE (BUF FIXES FROM 1.20)
  594.     -'newfile' fixed
  595. V1.21 RELEASE (BUG FIXES FROM 1.20)
  596.     -iconify and window handling fixed
  597.     -left mouse button now tracks the mouse.
  598. V1.20 RELEASE
  599.     -bug fixes: bsave now unmarks the block, bdelete now sets 'modified' flag.
  600.             (other small fixes).
  601.     -enhancements: overwrite mode status indicator, find, find-replace now
  602.             completely implemented (yahhoo!!!)
  603.     -changed commands:  FIND NEXT PREV: no longer loop back to the top of
  604.             file or top->bottom in the case of PREV.  DELINE will now delete
  605.             text on the line if there is only one line of text.
  606.     -enhanced commands: GOTO REPEAT
  607.     -new commands: SAVEMAP SAVESMAP TOGGLE SETTOGGLE RESETTOGGLE TLATE
  608.                    IF IFELSE WHILE BSOURCE
  609.                    FINDSTR REPSTR FINDR NEXTR PREVR
  610.                    NEWWINDOW
  611.     -new keymappings: (see a-s, a-S, f3)
  612.     -window iconification with mouse menu button.
  613.  
  614.  
  615. V1.12 RELEASE
  616.     -cursor is now pen #3 rather than #1.
  617.     -changeover to AZTEC C, smaller executable.
  618.     -now maps shift space to a space.
  619.     -new commands: REMEOL, WLEFT, WRIGHT
  620.     -display bug fixes (SPLIT)
  621.     -FIND/PREV/NEXT will now abort a REPEAT if string not found.
  622.  
  623. V1.11 RELEASE NOTES
  624.     -Bug fixes (mainly graphical mistakes).
  625.     -User keymappings are disabled in command mode (so you can unmap
  626.       single ascii characters you may have mapped).
  627.     -Illegal key combinations no longer give garbage (e.g. ALT-CURSOR-DOWN)
  628.       you can, of course, still map them to anything you wish.
  629.     -Save now checks for error conditions on write.
  630.     -Uses Default Console Keymap (i.e. no longer assumes USA)... but there
  631.       *is* some stangeness.
  632.  
  633. V1.00 RELEASE NOTES
  634.     -has find, but no replace function
  635.     -marked blocks are not highlighted
  636.     -assumes USA keyboard                   (fixed 1.11)
  637.     -disk files written out use spaces instead of tabs&spaces
  638.     -No scroll bar yet.
  639.  
  640.  
  641.                                     VII
  642.                                 COMPILING
  643.  
  644. DME now compiles only under AZTEC.  You must compile with the 32 bit int
  645. option, but may use the small code/data model.  A support lib which I have
  646. created is also required.  I use a precompiled symbol file containing ALL
  647. the AMIGA includes (but not any Aztec standard includes).
  648.  
  649.